<?php
/**
 * DbQuery.php
 *
 * 跨境电商商城系统
 * =========================================================
 * Copy right 2016-2026 大连熠泽科技网络有限公司
 * ----------------------------------------------
 * 官方网址: http://www.yizehuitong.com

 * 任何企业和个人不允许对程序代码以任何形式任何目的再发布。
 * =========================================================
 * @author : yizeteam
 * @date : 2019.10
 * @version : v2.0
 */

namespace data\service;

use think\Db;

/**
 * sql 执行表
 */
class DbQuery extends BaseService
{
	
	/***********************************************************SQL开始*********************************************************/
	
	/**
	 * 修复表
	 */
	public function repair($tables)
	{
		if ($tables) {
			Db::startTrans();
			try {
				if (is_array($tables)) {
					$tables = implode('`,`', $tables);
					Db::query("REPAIR TABLE `{$tables}`");
				} else {
					Db::query("REPAIR TABLE `{$tables}`");
				}
				Db::commit();
				return showMessage("数据表修复完成", 1);
			} catch (\Exception $e) {
				// 回滚事务
				Db::rollback();
				return showMessage("数据表修复失败");
			}
		} else {
			return showMessage("请指定要修复的表");
		}
	}
	
	/**
	 * 优化表
	 */
	public function optimize($tables)
	{
		if ($tables) {
			if (is_array($tables)) {
				$tables = implode('`,`', $tables);
				$list = Db::query("OPTIMIZE TABLE `{$tables}`");
				if ($list) {
					
					return showMessage("数据表优化完成", 1);
				} else {
					return showMessage("数据表优化失败");
				}
			} else {
				$list = Db::query("OPTIMIZE TABLE `{$tables}`");
				if ($list) {
					return showMessage("数据表优化完成", 1);
				} else {
					return showMessage("数据表优化失败");
				}
			}
		} else {
			return showMessage("请指定要优化的表");
		}
	}
	
	private function sql_execute($sql, $is_debug)
	{
		if (trim($sql) != '') {
			$sql = str_replace("\r\n", "\n", $sql);
			$sql = str_replace("\r", "\n", $sql);
			$sql_array = explode(";\n", $sql);
			if (!$is_debug) {
				Db::startTrans();
			}
			try {
				foreach ($sql_array as $item) {
					if ($is_debug) {
						Db::startTrans();
					}
					$querySql = trim($item);
					if ($querySql != '') {
						@Db::execute($querySql . ";");
						if ($is_debug) {
							Db::rollback();
						}
					}
				}
				if (!$is_debug) {
					Db::commit();
				}
				return showMessage("执行完毕", 1);
			} catch (\Exception $e) {
				Db::rollback();
				return showMessage($e->getMessage());
			}
		} else {
			return showMessage("请填写要执行的sql语句！");
		}
	}
	
	/**
	 * 执行sql
	 */
	public function sqlQuery($sql)
	{
//         $result=$this->sql_execute($sql, true);
//         if($result["status"]==1){
		$result = $this->sql_execute($sql, false);
//         }
		return $result;
	}
	
	public function yujjia($sql)
	{
		Db::startTrans();
		try {
			Db::query($sql);
			Db::rollback();
			return "1";
		} catch (\Exception $e) {
			Db::rollback();
			return showMessage($e->getMessage());
		}
		
	}
	
	/**
	 * 查询所有表
	 */
	public function getDatabaseList()
	{
		$databaseList = Db::query("SHOW TABLE STATUS");
		return $databaseList;
	}
	
	/***********************************************************SQL结束*********************************************************/
}